﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.IO;
//using System.Runtime.Serialization.Formatters.Binary;

//namespace NetworkingLibrary
//{
//    public static class GlobalMethods
//    {
//        public static byte[] ToBytes(object TheObj)
//        {
//            try
//            {
//                BinaryFormatter Form = new BinaryFormatter();
//                MemoryStream Mr = new MemoryStream();
//                Form.Serialize(Mr, TheObj);
//                return Mr.ToArray();
//            }
//            catch
//            {
//            }
//            return null;
//        }

//        public static object FromBytes(byte[] Buffer)
//        {
//            try
//            {
//                BinaryFormatter Form = new BinaryFormatter();
//                MemoryStream Mr = new MemoryStream(Buffer);
//                return Form.Deserialize(Mr);
//            }
//            catch
//            {
//            }
//            return null;
//        }

//        internal const int LengthStringLength = 6;
//        internal const int LengthBytesLength = 30;

//        internal static byte[] FormMessage(byte[] OrigBytes)
//        {
//            try
//            {
//                string LengthString = "";
//                LengthString = OrigBytes.Length.ToString();
//                while (LengthString.Length < LengthStringLength)
//                {
//                    LengthString = "0" + LengthString;
//                }
//                byte[] LengthBytes = ToBytes(LengthString);

//                byte[] NewBytes = new byte[OrigBytes.Length + LengthBytes.Length];
//                LengthBytes.CopyTo(NewBytes, 0);
//                OrigBytes.CopyTo(NewBytes, LengthBytesLength);

//                return NewBytes;
//            }
//            catch
//            {
//            }
//            return OrigBytes;
//        }

//        internal static List<byte[]> GetAllMessages(byte[] OrigBytes)
//        {
//            List<byte[]> TheMessages = new List<byte[]>();
//            List<byte[]> StartMessage = RetrieveMessage(OrigBytes);
//            if (StartMessage.Count >= 2)
//            {
//                while (StartMessage.Count >= 2)
//                {
//                    StartMessage = RetrieveMessage(StartMessage[1]);
//                    if (StartMessage.Count > 0)
//                    {
//                        TheMessages.Add(StartMessage[0]);
//                    }
//                }
//            }
//            else if(StartMessage.Count > 0)
//            {
//                TheMessages.Add(StartMessage[0]);
//            }
//            return TheMessages;
//        }

//        private static List<byte[]> RetrieveMessage(byte[] NewBytes)
//        {
//            List<byte[]> TheArray = new List<byte[]>(1);
//            try
//            {
//                List<byte> LengthBytes = new List<byte>();
//                for (int i = 0; i < LengthBytesLength; i++)
//                {
//                    LengthBytes.Add(NewBytes[i]);
//                }
//                try
//                {
//                    int TheLength = Convert.ToInt32((string)(FromBytes(LengthBytes.ToArray())));
//                    byte[] OrigBytes = new byte[TheLength];
//                    for (int i = 0; i < TheLength; i++)
//                    {
//                        OrigBytes[i] = NewBytes[i + LengthBytesLength];
//                    }
//                    TheArray.Add(OrigBytes);
//                    byte[] LeftOverBytes = new byte[(NewBytes.Length - (TheLength + LengthBytesLength))];
//                    if (LeftOverBytes.Length > 0)
//                    {
//                        NewBytes.CopyTo(LeftOverBytes, (TheLength + LengthBytesLength));
//                        TheArray.Add(LeftOverBytes);
//                    }
//                }
//                catch
//                {
//                }
//                return TheArray;
//            }
//            catch
//            {
//            }
//            TheArray.Add(NewBytes);
//            return TheArray;
//        }
//    }
//}
